#include <iostream>
using namespace std;

class Item{
public:
    Item() = default;
    Item(const Item& item){
        cout << "copy Item" << endl;
    }
};

class A{
public:
    int* p_val;
    Item item[3]; // 默认拷贝构造函数可以逐一拷贝数组内的元素，包括类和原生类型
public:
    A(){
        p_val = new int;
        *p_val = 0;
    }
};

int main(){
    A a1;
    A a2(a1);
    
    // 默认的拷贝构造函数只拷贝成员变量，不会拷贝其指向的内容：浅拷贝
    cout << *a1.p_val << *a2.p_val << endl;

    *a1.p_val += 1;
    cout << *a1.p_val << *a2.p_val << endl;

    return 0;
}
